/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: SearchConversation.java 30 2012-08-28 07:55:17Z zhuxiaopeng $
 * $Revision: 30 $
 * $Date: 2012-08-28 15:55:17 +0800 (二, 2012-08-28) $
 * $Author: zhuxiaopeng $
 */
package daily.web.search;

import static zhu.framework.web.WebUtility.*;

import java.util.*;

import javax.annotation.*;
import javax.enterprise.context.*;
import javax.inject.*;

import daily.entity.*;
import daily.service.*;
import daily.util.*;
import daily.web.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 30 $ - $Date: 2012-08-28 15:55:17 +0800 (二, 2012-08-28) $
 */
@Named
@ConversationScoped
public class SearchConversation extends AbstractConversation {

	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	@PostConstruct
	private void init() {
		final Date date = new Date();
		startDate = DateUtils.getFirstDayOfMonth(date);
		endDate = date;
		selectStaff = getServiceRequestContext().getLoginStaff();
	}

	/**
	 * <p>
	 * プロパティ<code>selectStaff</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>selectStaff</code>の値
	 */
	public synchronized Staff getSelectStaff() {
		return selectStaff;
	}

	/**
	 * <p>
	 * プロパティ<code>selectStaff</code>の値を設定する。
	 * </p>
	 * 
	 * @param selectStaff
	 *            プロパティ<code>selectStaff</code>に設定する値
	 */
	public synchronized void setSelectStaff(final Staff selectStaff) {
		this.selectStaff = selectStaff;
	}

	/**
	 * <p>
	 * プロパティ<code>dailyList</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>dailyList</code>の値
	 */
	public synchronized List<DailyData> getDailyList() {
		return dailyList;
	}

	/**
	 * <p>
	 * プロパティ<code>dailyList</code>の値を設定する。
	 * </p>
	 * 
	 * @param dailyList
	 *            プロパティ<code>dailyList</code>に設定する値
	 */
	public synchronized void setDailyList(final List<DailyData> dailyList) {
		this.dailyList = dailyList;
	}

	/**
	 * <p>
	 * プロパティ<code>startDate</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>startDate</code>の値
	 */
	public synchronized Date getStartDate() {
		return startDate;
	}

	/**
	 * <p>
	 * プロパティ<code>startDate</code>の値を設定する。
	 * </p>
	 * 
	 * @param startDate
	 *            プロパティ<code>startDate</code>に設定する値
	 */
	public synchronized void setStartDate(final Date startDate) {
		this.startDate = startDate;
	}

	/**
	 * <p>
	 * プロパティ<code>endDate</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>endDate</code>の値
	 */
	public synchronized Date getEndDate() {
		return endDate;
	}

	/**
	 * <p>
	 * プロパティ<code>endDate</code>の値を設定する。
	 * </p>
	 * 
	 * @param endDate
	 *            プロパティ<code>endDate</code>に設定する値
	 */
	public synchronized void setEndDate(final Date endDate) {
		this.endDate = endDate;
	}

	private Date startDate;

	private Date endDate;

	private Staff selectStaff;

	private List<DailyData> dailyList;
}
